<?php
	require_once('Porte.php');
	require_once('Chauffage.php');
	
	/*Classe GestionFoyer : 
	* Permet de gérer la base de données du Serveur Foyer. Doit faire le liens entre l'interface et la base de données.
	* $listeElem : Liste des éléments présent dans la table ListeELement de la base de données.
	* $idBdd : identifiant de la base de données
	* $idClient : identifiant du client connecté (utilisation pour les connexions sécurisées
	* $droits : liste des droits du client par élément présent dans la maison. (optionnel)
	* $listeEtat : tableau représentant l'état actuel de la maison.
	* Remarque : 
	* Fin de connexion avec la base de données à la destruction de la classe.
	* Trouver une architecture plus simple pour la base de données pour y implémenter les droits.
	*/
	class GestionFoyer
	{
		private $listeElem;
		private $idBdd;
		private $idClient;
		private $droits;	//optionnel
		private $listeEtat;
		public function __construct($idClient)
		{
			$this->idClient=$idClient;
			$idBdd = mysql_connect('juliendonuts.no-ip.org', 'projetTER', 'terdomo')or die("Connection impossible au serveur");
			mysql_select_db('domotique', $idBdd) or die("Connexion impossible à la base de donnée");
			$listeElem=mysql_query("SELECT * FROM ListeElement ORDER BY id;",$idBdd) or die("Requête non traitée");	
			$listeEtat=array();
			while($result = mysql_fetch_assoc($idBdd))
			{
				if($result["type"]==1)
				{
					$p=new Porte($idClient);
					$etat=mysql_query("SELECT ouvert FROM ListePorte WHERE id='".$result["id"]."';",$idBdd);
					$p->__set($etat);
					$listeEtat[]=$p;
				}
				else if($result["type"]==2)
				{
					$listeEtat[]=new Chauffage($idClient);
					$etat=mysql_query("SELECT temperature FROM ListeChauffage WHERE id='".$result["id"]."';",$idBdd);
					$p->__set($etat);
					$listeEtat[]=$p;
				}
			}
		}
		public function __destruct()
		{
			mysql_close($idBdd);
		}
		public function getListeEtat()
		{
			return $listeEtat;
		}
		public function fermer($indice)
		{
			if(($indice>=0)&&($indice<count($listeEtat))
			{
				if($listeEtat[$indice]->__get('$type')==1)
				{
					if(mysql_query("UPDATE Porte SET ouvert=false WHERE id=".$indice.";"))
					{
						$listeEtat[$incide]->fermer();
					}
					else
					{
						echo "Erreur : impossible d'envoyer la requête à la base de données.";
					}
				}
				else
				{
					echo "L'élément sélectionné ne peut être fermé.";
				}
			}
			else
			{
				echo "Erreur d'indice";
			}
		}
		public function ouvrir($indice)
		{
			if(($indice>=0)&&($indice<count($listeEtat))
			{
				if($listeEtat[$indice]->__get('$type')==1)
				{
					if(mysql_query("UPDATE Porte SET ouvert=true WHERE id=".$indice.";"))
					{
						$listeEtat[$incide]->ouvrir();
					}
					else
					{
						echo "Erreur : impossible d'envoyer la requête à la base de données.";
					}
				}
				else
				{
					echo "L'élément sélectionné ne peut être fermé.";
				}
			}
			else
			{
				echo "Erreur d'indice";
			}
		}
		public function reglerTemperature($indice, $value)
		{
			if(($indice>=0)&&($indice<count($listeEtat))
			{
				if($listeEtat[$indice]->__get('$type')==2)
				{
					if(mysql_query("UPDATE Chauffage SET temperature=".$listeEtat[$indice]->get['$etatElt']." WHERE id=".$indice.";"))
					{
						$listeEtat[$indice]->setTmp($value);
					}
					else
					{
						echo "Erreur : impossible d'envoyer la requête à la base de données.";
					}
				}
				else
				{
					echo "L'élément sélectionné n'a pas de valeur réglable.";
				}
			}
			else
			{
				echo "Erreur d'indice";
			}
		}
	}
?>
